<?php

class My_Form extends Zend_Form
{
	protected $hiddenDecorator = array(
		'ViewHelper'
	);
	
	protected $textDecorator = array(
		'ViewHelper',
		'Errors',
		array('HtmlTag', array('tag' => 'div', 'class' => 'formField')),
		'Label'
	);
	
	protected $submitDecorator = array(
		'ViewHelper', 
		array('HtmlTag', array('tag' => 'div', 'class' => 'formSubmit'))
	);
	
    /**
     * Metoda pozwala na przefiltrowanie danych pochodzących bezpośrednio z tablicy $_POST, tak aby wyeliminować
     * pola niepożądane.
     */
    public function filterPost( $aPost, $aIgnorowanePola = array() )
    {
        $aElementy = $this->getElements();

        /*
         * Tworzymy listę oczekiwanych pól na podstawie elementów formularza - z wyłączeniem niektórych pól
         */
        $aIgnorowaneTypy = array( 'Zend_Form_Element_Button', 'Zend_Form_Element_Submit', 'Zend_Form_Element_Hash' );

        foreach( $aElementy as $oElement )
        {
            if( ! in_array( $oElement->getType(), $aIgnorowaneTypy ) AND ! in_array( $oElement->getName(), $aIgnorowanePola ) )
            {
                $aKolumny[] = $oElement->getName();
            }

            if( $oElement->getType() == 'Zend_Form_Element_Checkbox' AND !isset( $aPost[$oElement->getName()] ) )
            {
            	$aPost[$oElement->getName()] = 0;
            }
        }

        /*
         * Przeszukujemy przekazaną tablicę POST w poszukiwaniu pól oczekiwanych
         */
        $aDane = array();

        foreach( $aKolumny as $sKolumna )
        {
            $aDane[$sKolumna] = $aPost[$sKolumna];
        }

        return $aDane;
    }
}